





function findAnagrams (s, p) {
    let result = []; // 队列数组
    const sLenght = s.length, pLength = p.length; // 窗口长度和列表长度
    
    if (sLenght < pLength) return 0; // 边界情况

    const sCount = new Array(26).fill(0) // 出现频次
    const pCount = new Array(26).fill(0) // 出现频次
    const charCode = 'a'.charCodeAt(0) // 基准数

    for (let i = 0; i < pLength; i++) {
        pCount[p.charCodeAt(i) - charCode]++
        sCount[s.charCodeAt(i) - charCode]++
    }
    // 查找是否有异位数
    if (arraysAre(pCount, sCount)) result.push(0)

    // 窗口开始滑动 滑块大小为 pLength 列表为 sLenght
    for (let i = pLength; i < sLenght; i++) {
        // 入队
        sCount[s.charCodeAt(i) - charCode]++
        // 出队
        sCount[s.charCodeAt(i - pLength) - charCode]--
        // 滑动过程中比较 频次是否相同
        if (arraysAre(pCount, sCount)) result.push(i - pLength + 1)
    }
    console.log(sCount, 'sCount')
    console.log(pCount, 'pCount')
    console.log(result, 'result')
    return result
}

function arraysAre(arr, brr) {
    for (let i = 0; i < 26; i++) {
        if (arr[i] !== brr[i]) return false
    }
    return true
}
console.log(findAnagrams('ebabacdcba', 'abc'))